package com.dl.mall.service.user;

import com.alibaba.fastjson.JSONObject;
import com.dl.mall.entity.user.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

/**
 * 用户类服务层
 * @author DL
 * @create 2022-01-30 18:38
 */
@Service
public interface UserService {

    /**
     * 增加用户
     * @param userId 用户id  uuid
     * @param username 用户名
     * @param password 密码
     * @return 受影响的行数
     */
    boolean addUser(JSONObject user);

    /**
     * 更新密码
     * @param userId 用户名
     * @param password 原密码
     * @return 受影响的行数
     */
    boolean modifyPassword(String userId, String password);

    /**
     * 更新用户个人信息
     * @return 受影响的行数
     */
    int modifyUserBasicInfo(User user);

    /**
     * 更新用户个人信息
     * @param user 用户对象
     * @return 受影响的行数
     */
    int modifyUserAllInfo(User user);

    /**
     * 根据用户名查询用户信息，检查用户名是否重复
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUserName(String username);

    /**
     * 根据 用户id 查询用户(用于修改密码获得原密码)
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUserId(String userId);

    /**
     * 登录
     * @param username 用户名
     * @return 用户
     */
    User login(String username);

    /**
     * 根据 用户id 查询用户基本信息
     * @param userId 用户id
     * @return 用户
     */
    User getUserBasicInfo(String userId);


}
